Dedicated pipeline queues have been used in multi-pipeline execution units of processors in order to achieve faster processing speeds. In particular, dedicated queues have been used for execution (EX) units having multiple EX pipelines that are configured to execute different subsets of a set of supported micro-instructions. Dedicated queuing has generated various bottlenecking problems and problems for the scheduling of microinstructions that required both numeric manipulation and retrieval/storage of data.
Processors are conventionally designed to process operations (Ops) that are typically identified by operation codes (OpCodes), (i.e., instruction codes). In the design of new processors, it is important to be able to process all of a standard set of Ops so that existing computer programs based on the standardized codes will operate without the need for translating Ops into an entirely new code base. Processor designs may further incorporate the ability to process new Ops, but backwards compatibility to older instruction sets is often desirable.
Execution of micro-instructions/Ops is typically performed in an execution unit of a processor. To increase speed, multi-core processors have been developed. Furthermore, to facilitate faster execution throughput, “pipeline” execution of Ops within an execution unit of a processor core is used. Cores having multiple execution units for multi-thread processing are also being developed. However, there is a continuing demand for faster throughput for processors.
One type of standardized set of Ops is the instruction set compatible with “x86” chips, (e.g., 8086, 286, 386, and the like), that have enjoyed widespread use in many personal computers. The micro-instruction sets, such as the “x86” instruction set, include Ops requiring numeric manipulation, Ops requiring retrieval and/or storage of data, and Ops that require both numeric manipulation and retrieval/storage of data. To execute such Ops, execution units within processors have included two types of pipelines: arithmetic logic pipelines (“EX pipelines”) to execute numeric manipulations, and address generation (AG) pipelines (“AG pipelines”) to facilitate load and store Ops.
In order to quickly and efficiently process Ops as required by a particular computer program, the program commands are decoded into Ops within the supported set of microinstructions and dispatched to the execution unit for processing. Conventionally, an OpCode is dispatched that specifies the Op/micro-instruction to be performed along with associated information that may include items such as an address of data to be used for the Op and operand designations.
Dispatched instructions/Ops are conventionally queued for a multi-pipeline scheduler queue of an execution unit. Queuing is conventionally performed with some type of decoding of a micro-instruction's OpCode in order for the scheduler queue to appropriately direct the instructions for execution by the pipelines with which it is associated within the execution unit.
The processing speed of the execution unit may be affected by the operation of any of its components. For example, any delay in scheduling of the instructions may adversely affect the overall speed of the execution unit.